package com.kehutong.wxapi.service;

import com.kehutong.wxapi.request.*;
import com.kehutong.wxapi.response.*;
import com.kehutong.wxapi.service.impl.TagServiceImpl;
import org.coraframework.inject.ImplementedBy;

/**
 * 标签管理服务
 */
@ImplementedBy(TagServiceImpl.class)
public interface TagService {
    /**
     * 创建标签
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/tag/create?access_token=ACCESS_TOKEN
     * @param tagCreateRequest 创建标签请求对象
     * @return 创建标签响应对象
     * @throws Exception 异常
     */
    TagCreateResponse tagCreate(TagCreateRequest tagCreateRequest) throws Exception;

    /**
     * 更新标签名称
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/tag/update?access_token=ACCESS_TOKEN
     * @param tagUpdateRequest 更新标签请求对象
     * @return 更新标签响应对象
     * @throws Exception 异常
     */
    TagUpdateResponse tagUpdate(TagUpdateRequest tagUpdateRequest) throws Exception;


    /**
     * 删除标签
     * https://qyapi.weixin.qq.com/cgi-bin/tag/delete?access_token=ACCESS_TOKEN&tagid=TAGID
     * @param tagDeleteRequest 删除标签请求对象
     * @return 删除标签响应对象
     * @throws Exception 异常
     */
    TagDeleteResponse tagDelete(TagDeleteRequest tagDeleteRequest) throws Exception;



    /**
     * 获取标签成员
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/tag/get?access_token=ACCESS_TOKEN&tagid=TAGID
     * @param tagGetRequest 获取标签成员请求对象
     * @return 获取标签成员响应对象
     * @throws Exception 异常
     */
    TagGetResponse tagGet(TagGetRequest tagGetRequest) throws Exception;


    /**
     * 增加标签成员
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/tag/addtagusers?access_token=ACCESS_TOKEN
     * @param addTagUsersRequest 增加标签成员请求对象
     * @return 增加标签成员响应对象
     * @throws Exception 异常
     */
    AddTagUsersResponse addTagUsers(AddTagUsersRequest addTagUsersRequest) throws Exception;

    /**
     * 删除标签成员
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/tag/deltagusers?access_token=ACCESS_TOKEN
     * @param delTagUsersRequest 删除标签成员请求对象
     * @return 删除标签成员响应对象
     * @throws Exception 异常
     */
    DelTagUsersResponse delTagUsers(DelTagUsersRequest delTagUsersRequest) throws Exception;


    /**
     * 获取标签列表
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/tag/list?access_token=ACCESS_TOKEN
     * @param tagListRequest 获取标签列表请求对象
     * @return 获取标签列表响应对象
     * @throws Exception 异常
     */
    TagListResponse tagList(TagListRequest tagListRequest) throws Exception;


}
